//x 的平方根 ------69
// 给你一个非负整数 x ，计算并返回 x 的 算术平方根 。
// 由于返回类型是整数，结果只保留 整数部分 ，小数部分将被 舍去 。
// 注意：不允许使用任何内置指数函数和算符，例如 pow(x, 0.5) 或者 x ** 0.5 。

#include <stdio.h>

int mySqrt(int x) 
{
    if(x == 1)
    return 1;
    long long left = 1;
    long long right = x/2;
    while(left <= right)
    {
        long long mid = left + (right - left) / 2;
        if(mid * mid == x)
        {
            return mid;
        }
        else if(mid * mid < x)
        {
            left = mid + 1;
        }
        else if(mid * mid > x)
        {
            right = mid - 1;
        }
    }
    return left - 1;
}

int main()
{
    int n;
    printf("请输入一个正整数：");
    scanf("%d",&n);
    printf("%d的平方根为:%d(取整数)\n",n,mySqrt(n));
    return 0;
}